<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script src="./lib/vue.min.js"></script>
    <script src="./lib/vue-router.js"></script>
    <style>
        .router-link-active, .myactive {
            color: red;
            font-weight: 800;
            font-style: italic;
            font-size: 80px;
            text-decoration: underline;
            background-color: green;
        }
        /* 实现transition动画 */
        .v-enter,
        .v-leave-to{
            opacity: 0;
            transform: translateX(140px);
        }
        .v-enter-active,
        .v-leave-active{
            transition: all .5s ease;
        }
    </style>
</head>
<body>
    <div id="app">

        <!-- <a href="#/login">登录</a>
        <a href="#/register">注册</a> -->
        
        <!-- router-link 默认渲染为一个a标签 -->
        <!-- tag = "span" 将默认a标签改为span标签 -->
        <router-link to = "/login" tag = "span">登录</router-link>
        <router-link to="/register" tag = "span">注册</router-link>

        <!-- 这是vue-router 官方提供的元素，专门用来当做占位符，将来路由匹配到的组件，就会展示到这个router-view中去 -->
        <!-- 可认为router-view是一个占位符 -->
        <transition mode = "out-in">
            <router-view></router-view>
        </transition>
    </div>
    
    <script> 
        //组件模板对象
        var login = {
            template: '<h1>登录组件</h1>'
        }
        
        var register = {
            template: '<h1>注册组件</h1>'
        }


        //创建一个路由对象，当导入 vue-router包之后，在window全局对象中，就有了一个路由的构造函数Vuerouter。
        //在 new 路由对象的时候，可以为构造函数传递一个配置对象，
        var routerObj = new VueRouter({
            //route  //这个配置对象中的 route 表示路由匹配规则的意思
            routes: [ //路由匹配规则
                //每个路由规则都是一个对象，这个规则对象身上有两个必须的属性：
                //属性1:是 path， 表示监听，那个路由监听地址；
                //属性2：是 component 表示， 如果是路由前面匹配到的path，，则展示component属性对应的那个组件。
                //注意: component 的属性值必须是一个组件模板对象，不能是组件名称
                { path: '/', redirect: '/login'}, //这里中的redirect 和Node 中的 redirect 完全是两回事
                { path: '/login', component: login},
                { path: '/register', component: register},
            ],
            //创建类名，不使用router-link-active 默认class
            //linkActiveClass: 'myactive'
        })

        var vm = new Vue({
            el:"#app",
            data:{},
            methods: {},

            router: routerObj //将路由规则对象，注册到vm实例上， 用来监听url地址的变化，从而展示对应的组件
        })
    </script>
</body>
</html>